let getYzmURL = "http://39.105.231.80:9900/smscode/getcurrentcode/";

//清除缓存chorme.storage.local.clear();
async function doIt() {
  let isSuitableFlag = await isSuitable();
  if (isSuitableFlag === true) {
    //判断接口通不通,不通的话,就啥也不做了
    let canAccess = await checkApi(getYzmURL + new Date().getTime());
    if (canAccess === true) {
      openHome();
    }
  }
}
doIt();
setInterval(doIt, 1000 * 60 * 8);
// let step1_wrapper_list = document.getElementsByClassName("step1_wrapper"); //如果在第一步,那么每十分钟执行一次,看看是否符合条件,否则直接进入
// if (step1_wrapper_list && step1_wrapper_list.length) {
//   //到点自动执行逻辑未写
//   setInterval(async () => {
//     let isSuitableFlag = await isSuitable();
//     if (isSuitableFlag === true) {
//       openHome();
//     }
//   }, 1000 * 60 * 3);
// }
// else {
//   //如果点击了获取验证码
//   if (document.querySelector("#sendSmsCode").getAttribute("disabled")) {
//     openHome();
//   } else {
//     //如果没有点击
//     let max_time = 5;
//     let excute_time = 0;
//     setInterval(async () => {
//       if (excute_time <= max_time) {
//         let isSuitableFlag = await isSuitable();
//         if (isSuitableFlag === true) {
//           excute_time++;
//           openHome();
//         }
//       }
//     }, 1000 * 60 * 3);
//   }
// }

async function isSuitable() {
  let toHour = new Date().getHours();
  let toMinute = new Date().getMinutes();
  let isMorningClockTime = !!(toHour === 8 && toMinute > 10 && toMinute < 30);
  let isAfterClockTime = !!(toHour >= 17 && toHour <= 19);

  if (isMorningClockTime) {
    let hasClockedResult = await hasClocked("morning");
    if (!hasClockedResult) {
      return true;
    }
  }
  if (isAfterClockTime) {
    let hasClockedResult = await hasClocked("afternoon");
    if (!hasClockedResult) {
      return true;
    }
  }
  return false;
}
function hasClocked(type) {
  return new Promise((resolve, reject) => {
    if (type == "morning") {
      //检查是否有记录
      chrome.storage.local.get(
        `day${getNowFormatDate()}morning`,
        function (temp) {
          if (
            temp[`day${getNowFormatDate()}morning`] &&
            temp[`day${getNowFormatDate()}morning`] !== "-"
          ) {
            resolve(true);
          } else {
            resolve(false);
          }
        }
      );
    } else if (type == "afternoon") {
      chrome.storage.local.get(
        `day${getNowFormatDate()}afternoon`,
        function (temp) {
          if (
            temp[`day${getNowFormatDate()}afternoon`] &&
            temp[`day${getNowFormatDate()}afternoon`] !== "-"
          ) {
            resolve(true);
          } else {
            resolve(false);
          }
        }
      );
    }
  });
}
async function openHome() {
  let smsLoginButton = document.getElementById("sms_login");
  await delay(1000);
  smsLoginButton.click();
  if (smsLoginButton.classList.contains("active")) {
    //第二次点击登录
    let step1_wrapper_list = document.getElementsByClassName("step1_wrapper");
    if (step1_wrapper_list && step1_wrapper_list.length) {
      setTimeout(() => {
        document.getElementById("loginBtn").click();
      }, 2000);
    } else {
      //此时等待验证码
      await delay(1000);
      document.getElementById("sendSmsCode").click();
      getYZMInterface().then(async (res) => {
        if (res && ("" + res).length == 6) {
          document.getElementById("smsVerificationCode").value = res;
          await delay(1000);
          document.querySelector("[type='submit'].login_btn").click();
          //检查五秒内有没有跳转,如果没有跳转,那么重新刷新页面会重新执行这一串代码的
          // setTimeout(() => {
          //   //五秒后检查是不是在主页了
          //   if (document.location.href.indexOf("livebos") > -1) {
          //     console.log("123");
          //     setTimeout(() => {
          //       console.log("456");
          //       alert("跳转了");
          //     }, 3000);
          //     //document.querySelector("span[title='外包人员']").click()
          //     // var event = new MouseEvent('mouseover', {
          //     //     'view': window,
          //     //     'bubbles': true,
          //     //     'cancelable': false
          //     // });
          //     // // 获取你想要触发鼠标移入事件的元素
          //     // var element = document.querySelector("span[title='外包人员']")
          //     // // 分发事件
          //     // element.dispatchEvent(event);
          //   } else {
          //     alert("为跳转");
          //     window.location.reload();
          //   }
          // }, 5000);
        }
      });
      //没有点账号登陆
      //document.getElementById("loginBtn").click();
    }
  } else {
    // alert("smsLoginButton.classList.contains('active') == false");
    // //第一次点击密码登录
    // document.getElementById("sms_login").click();
  }

  //document.getElementById("loginBtn").click();
}

// delayExcute(openHome);
// chrome.runtime.sendMessage({ message: "open_home" }, (response) => {});
//delay(1000).then(document.getElementById("switcher_plogin").click());
// // 向后台脚本发送消息
// chrome.runtime.sendMessage({ message: "get_data" }, (response) => {
//   // 在这里处理来自后台脚本的响应
//   console.log("从后台脚本获取的数据：", response.data);
// });

// // 监听来自后台脚本的消息
// chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
//   if (request.message === "change_background") {
//     // 在收到来自后台脚本的消息时，修改页面背景颜色
//     document.body.style.backgroundColor = "green";
//     sendResponse({ response: "背景颜色已修改" });
//   }
// });

//延迟函数
function delay(duration) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve();
    }, duration);
  });
}
// function getYZM() {
//   //每五十秒调用一次接口,直到查到数据resolve这个数据,否则一直pending
//   return new Promise((resolve, reject) => {
//     getYZMInterface().then((res) => {
//       if (res) {
//         resolve(res);
//       }
//     });
//   });
// }
function getYZMInterface() {
  let index = 0;
  return new Promise((resolve, reject) => {
    let finalYZM = "";
    let intervalId = setInterval(() => {
      if (index < 8) {
        index++;
        fetch(getYzmURL + +new Date())
          .then((res) => res.text())
          .then((res) => {
            if (res && ("" + res).length == 6) {
              resolve(res);
              clearInterval(intervalId);
            }
          });
      } else {
        clearInterval(intervalId);
      }
    }, 20000);
  });
}

function getNowFormatDate() {
  var date = new Date();
  var seperator1 = "-";
  var year = date.getFullYear();
  var month = date.getMonth() + 1;
  var strDate = date.getDate();
  if (month >= 1 && month <= 9) {
    month = "0" + month;
  }
  if (strDate >= 0 && strDate <= 9) {
    strDate = "0" + strDate;
  }
  var currentdate = year + month + strDate;
  return currentdate;
}

// chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
//   if (request.message === "weather") {
//     document.body.prepend(
//       (document.createElement("div").innerHTML = `
//       ${request.data.cityInfo.city}今日天气:
//       ${request.data.data.forecast[0].type}
//       ${request.data.data.forecast[0].low}
//       ${request.data.data.forecast[0].high}
//     `)
//     );
//   }
// });
async function checkApi(url) {
  return fetch(url)
    .then((response) => {
      if (response.ok) {
        // 状态码在200-299之间
        return true; // 接口可以调通
      }
      return false; // 接口不可调通
    })
    .catch((error) => {
      console.error("请求失败:", error);
      return false; // 请求失败，接口不可调通
    })
    .then((isAccessible) => isAccessible);
}
